package com.chatplus.application.common.util;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;

/**
 * 工作时间工具
 */
public class WorkingTimeUtils {

    /**
     * 获取工作时间；如果base在工作时间内，则返回base，否则计算下一个日期的工作开始时间
     *
     * @param base         基准时间
     * @param workHourFrom 工作时间几点开始，比如7点
     * @param workHourTo   工作时间几点结束，比如20点
     * @return 工作时间
     */
    public static LocalDateTime getWorkingTime(LocalDateTime base, int workHourFrom, int workHourTo) {
        int hour = base.getHour();
        if (hour < workHourFrom) {
            //获取今天的7点
            base = getWorkHourStartTime(base.toLocalDate(), workHourFrom);
        } else if (hour > workHourTo) {
            //获取第二天的7点
            base = getWorkHourStartTime(base.toLocalDate().plusDays(1), workHourFrom);
        }
        return base;
    }

    /**
     * 获取日期的工作开始时间
     *
     * @param workDate     日期
     * @param workHourFrom 工作时间几点开始，比如7点
     * @return LocalDateTime
     */
    public static LocalDateTime getWorkHourStartTime(LocalDate workDate, int workHourFrom) {
        return LocalDateTime
            .of(workDate, LocalTime.of(workHourFrom, 0));
    }

}
